home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 9 / Night Owl CD-ROM (NOPV9) (Night Owl Publisher) (1993).ISO / 002a / be310.zip / WHATSNEW.DOC < prev    next >
Text File  |  1993-06-01  |  16KB  |  359 lines

  1.                   Changes in Version 3.10
  2.                   -----------------------
  3.  
  4. This files list the changes in Bingo version 3.10.  There were
  5. many new additions in this version, a few old functions were
  6. removed, and a number of bugs cleaned up.  Major new
  7. functionality introduced includes a text recognition system, a
  8. multi-level undo, and XMS/EMS virtual memory support.
  9.  
  10. New Features in Version 3.10
  11. ----------------------------
  12.  
  13. - added a text recognition subsystem.  In profile files, you
  14. can define lines of the form:
  15.    &recog=<text to recognize>!<chess function to call>
  16. for example:
  17.    &recog=hello!do_hello_func()
  18. will cause the Chess user defined function 'do_hello_func' (which
  19. would have to be in the KEYCFG.SET file via KEYCFG) when the
  20. sequence of text 'hello' is typed.  The "trigger" text is case
  21. sensitive and is seperated from the Chess function by an
  22. exclamation point (!).  If you need to use an exclamation point
  23. (!) as part of the <text to recognize>, the '/' character will
  24. quote the following character.  For example:
  25.    &recog =hi/!//chris!do_on_func();
  26.   will recognize the text string: 'hi!/chris'
  27. Bingo can recognize strings up to 40 characters in length.
  28.  
  29. - two function to help with this have been added. 
  30. 'conf_recognize' will allow you to turn text recognition on and
  31. off, system-wide. 'show_recognize' displays the recognition pairs
  32. active for the current file.
  33.  
  34. - three "ask" primitives were added to inquire into the text
  35. recognition system:
  36.    i=ask("file_recmode");
  37.    i=ask("sys_recmode");
  38.    i=ask("file_recog",int n,char trigger[0],char chess_stmt[0]);
  39.  
  40. - added an option to the Box Draw subsystem which allows you to
  41. pick an arbitrary character (using the ASCII Table) and draw with
  42. it.
  43.  
  44.    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  45.    !   TA-DAAAAAAAA... TRUE MULTI-LEVEL UNDO    !
  46.    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  47.  
  48. - yes, that is right, Bingo now has an undo capability.  In
  49. addition to all the undelete support Bingo has always had, the
  50. 'undo' function can now undo up to 2048 changes.  Almost all
  51. functions of Bingo which change the text of a file can be undone,
  52. including such uglies as paragraph reformatting, except for
  53. things such as right shifting 11,000 lines to the right 4
  54. columns; for some of these functions, memory will be a problem
  55. and the operation will be .
  56.  
  57. - the 'conf_undo' function allows you to configure how many
  58. levels of undo Bingo will save.  Zero indicates no undo will be
  59. kept.  The number of undo events is global, not distinct between
  60. buffers. 
  61.  
  62. - the "ask" primitive 
  63.    i=ask("sys_undo_many");
  64. returns the current setting of the undo flag, an integer in the
  65. range 0-2048;
  66.  
  67. - the function 'restore_line' has been deleted -- with the
  68. addition of undo, it is no longer necessary.   
  69.  
  70. - the function 'last_position' has been added.  This function
  71. jumps to the previous position in the current file.
  72.  
  73. - altered the box pick mouse functionality so that the up and
  74. down arrow buttons are both at the bottom of the box, so you have
  75. to move the mouse less to use them both.
  76.  
  77. - changed the placemark code so that it will display only legal
  78. placemark numbers for jump operations, and uses a new popup box
  79. interface.
  80.  
  81. - deleted the 'show_placemark' function -- either the
  82. 'place_mark' or 'jump_mark' will do the same thing.
  83.  
  84. - expanded trapping of the Scroll_Lock key to include
  85. search/replace and printing, so that these operations can be
  86. interrupted.
  87.  
  88. - added a function 'view_screen' which allows you to view the DOS
  89. screen that was active prior to running Bingo, provided the
  90. 'conf_scr_save' setting is on.
  91.  
  92. - added environment variable support to Bingo's filename
  93. handling.  For example, when asked to a filename, you can use
  94.    :<env_var>:filename
  95. as a filename where <env_var> is a defined environment variable. 
  96. For example, I have CHESS defined as the directory where my Chess
  97. functions reside, defined as
  98.    set chess=c:\edit\chess\
  99. in my autoexec.bat.  This is a very powerful feature.
  100.  
  101. - changed the Chess functions 'str' and 'key' to allow them to be
  102. used with other functions than B_cmd.  For example, this function:
  103.       {
  104.          char temp[80];
  105.          int i;                           
  106.          str(":chess:*.chs");
  107.          key("return");
  108.          if(get_fname(temp,"Execute what Chess program file?",0,0)>=)
  109.             return(run(temp));
  110.          else
  111.             return(0);
  112.       } 
  113. provides you with a pick list of all the .CHS files in the
  114. subdirectory pointed to by the CHESS environment variable, and
  115. execute the one you pick.
  116.  
  117. - the 'quit_and_save_status' function is now gone.  Bingo now
  118. can save more status information in between sessions, in a file
  119. called 'brecall.dat', which replaces the previously used
  120. 'recall.be' file. 
  121.  
  122. - 'conf_resume_pos' now controls whether Bingo will attempt to
  123. restore the cursor position of a file it enters.  For example,
  124. since Bingo saves status information on 15 files, if you reload
  125. one of these files with this option turned on, you will be placed
  126. at the cursor position where you were last located in that file.
  127.  
  128. - An interrupt generating mechanism has been added to Chess. 4
  129. functions comprise it:
  130.    clear_regs()               :  sets the contents of Bingo's
  131.                                  internal register working copy
  132.                                  to zero
  133.    set_reg(<regname>,val)     :  sets the value of Bingo's
  134.                                  working copy of <regname> to the 
  135.                                  specified value 'val'
  136.    get_reg(<regname>)         :  returns the value of Bingo's
  137.                                  working copy of <regname>
  138.    gen_interupt(intnum)       :  generates an 8086 interupt,
  139.                                  using the values in Bingo's
  140.                                  working copy to generate the
  141.                                  interupt.  When the interupt
  142.                                  returns, the register values it
  143.                                  generated are placed in Bingo's
  144.                                  working copy.
  145.    valid <regname>'s are:
  146.       16-bit values: ax bx cx dx si di cflag flags
  147.       8-bit values:  al ah bl bh cl ch dl dh
  148.  
  149. A word of caution about the gen_interupt function family: you can
  150. get yourself into large amounts of trouble with this function. 
  151. You can crash Bingo, write sectors to your disk, etc.  BE VERY
  152. CAREFUL!                                                     
  153.  
  154. - altered the behavior of the paragraph reformat function when
  155. AutoIndent mode is not turned on.  Bingo will now preserve the
  156. indention of the first line.
  157.  
  158. - altered the operation of Bingo's command line interface.  The
  159. command line is now much more adept at loading arguments.  Three
  160. sets of delimiters are now supported:
  161.    ~<string>~     loads the string and follows it with a carraige
  162.                   return
  163.    '<string>'     loads the string, period.
  164.    `<string>`     loads the string, and forces Bingo to wait for
  165.                   user input before continuing.
  166. For example:
  167.    search ~hello~ ~~    :  search for 'hello' with the default
  168.                            modifiers.
  169.    search 'hello' ~~    :  these are the same -- they search for
  170.    search ~hello~       :  'hello', but leave you at the modifier 
  171.                            prompt
  172.  
  173.    search `hello` ~i~   :  searches for hello, but waits for user
  174.                            input at the string entry box for the 
  175.                            target.  Then Bingo goes and performs
  176.                            the search, ignoring case.
  177. Another example:
  178.    conf_autoindent ~~   :  toggles the auto-indent setting
  179.    conf_autoindent 'y'  :  turns on autoindent
  180.  
  181. - radically changed the .INI file structure.  This is now a ascii
  182. file with user editable settings of the form:
  183.    &<setting> = <value>
  184. <value> can be one of three things, depending on the <setting>. 
  185.  
  186.    <setting> type       allowed <value>
  187.    ------------------------------------------------------------
  188.    TRUE/FALSE           1/0
  189.    Integer Range        0-???? (upper range is setting dependent)
  190.    String               <character string>
  191.  
  192. - the 'window_resize' function has been extended to allow resizing
  193. of windows horizontally as well as vertically.
  194.  
  195. - 'window_max' function added which makes the current window its
  196. largest size without closing any of the other windows; instead it
  197. simply makes each of the other windows as small as possible.
  198.  
  199. - added an incremental search function 'isearch' in place of the
  200. 'leap_' functions.  It will search in the forward direction; if
  201. the normal search definitions specify the Ignore Case option,
  202. 'isearch' will likewise ignore case.  Note: Chess functions which
  203. duplicate the functionality of the 'leap_' functions are provided
  204. with version 3.10.
  205.  
  206. - 'isearch_files' will likewise perform an incremental search,
  207. but over all the files, similar to the 'F' switch for searching.
  208.  
  209. - changed the second 'C' mode so that it only moves the trailing 
  210. '{' to the next line if there is a non-space character before it.
  211.  
  212. - altered Bingo's method of writing files so that it will NOT
  213. write over a file with the READ ONLY flag set; write operations
  214. will abort.
  215.  
  216. - added 3 new system functions for Chess.  
  217.    'set_display(int on)' will set on or off whether the display
  218.    ever gets updated during subsequent Bingo commands.  Setting
  219.    this off can signifigantly speed up processing.  Remember to
  220.    set it back on again and issue an 'update_display()' call to
  221.    update the display.  You can use 'update_display() independent
  222.    of this call.
  223.    'set_msg_wait(int on)' will set on or off whether Bingo waits
  224.    for a user keystroke on it's messages during subsequent
  225.    actions; for example, the 'replace' function always pauses for
  226.    3 seconds 
  227.    'set_recall("string","file")' will set on or off whether or
  228.    not string entry affects the two recall buffers.
  229.  
  230. - added the ability for Bingo functions do be directly called
  231. from within Chess without resorting to 'b_cmd'.  Now, Bingo's
  232. internal commands can be called with 0 or 1 arguments.  The
  233. arguement, if it is there, is treated as a character string to be
  234. parsed as 'cmd_line' would.  Internal functions are referenced by
  235. their standard names, only with the first character capitalized. 
  236. For example:
  237.    {              
  238.       Edit_file("temp.");
  239.       Top_of_file();
  240.       Begin_line();
  241.       Replace("~hello~ ~goodbye~ ~ig~");
  242.       File();
  243.    }
  244. This Chess program loads the file 'temp.' and changes all
  245. occurrences of HELLO to GOODBYE.
  246.  
  247. - Added XMS/EMS support for those of us with more silicon.
  248.  
  249. - 'conf_vmem' controls whether XMS (Extended Memory) and or EMS
  250. (Expanded Memory) can be used for virtual memory, and which will
  251. be used first.  Bingo will use XMS in 256k chunks; EMS in 256k
  252. chunks.  Bingo requires XMS v2.0 or greater, EMS v3.0 or greater.
  253.  
  254. - profile files were changed to match the same input specs as
  255. .INI files -- this is not a major difference from what they were,
  256. just syntax.
  257.  
  258. - you no longer attach Chess functions to keys using the clumsy
  259.    macro interpret 'my_func()' return
  260. interface.  Now you could simply assign this function to Alt-f by
  261. using:
  262.       #f    my_func()
  263. This means that a macro such as the "shift block one tabstop to
  264. the right" can be written 3 ways:
  265.  
  266.       #f2   macro shift_block '1t' return
  267. or
  268.       #f2   bingo("shift_block ~1t~");
  269. or
  270.       #f2   Shift_block("~1t~")
  271.  
  272. - changed all of the instances of 'applying' a keystroke (the
  273. repeat function, the global function, and the search and macro
  274. function) to apply any of three things:
  275.    1) keystroke(s)   
  276.    2) Bingo command line (as if it were used with the 'cmd_line'
  277.    function).
  278.    3) Chess command line (as if it were used with the
  279.    'exec_chess' function).
  280.  
  281. - 'search_macro' function renamed 'search_apply'
  282.  
  283. - added two search modifiers.  'F' stands for all Files.  This
  284. modifier forces the search algorithm (and replace, and search and
  285. macro) to treat the entire set of files as if they were one big
  286. files.  For example, you can be in the third file and search for
  287. the next occurance of 'hello'.  If hello is not found in the
  288. current file and it *is* found in a later file in the ring, you
  289. will be moved there.
  290.  
  291. - the 'T' modifier causes the search to start at the top or
  292. the bottom (if you are searching backwards); if you combine it
  293. with the 'F' modifier, it also moves you to the first or last
  294. file.
  295.  
  296. - 'conf_mark_paste' function added to allow for blocks to remain
  297. marked after they are pasted into the file.  This is a global
  298. setting, accessible from Chess as the 'sys_mark_paste' ask
  299. argument.  This is for you, Bradley.
  300.  
  301. - added a 'do { } while (...)' statement to Chess.  This is
  302. similar to the Do loop construct already present, except the
  303. conditional test is done *after* the body of the loop is
  304. executed, not unlike pascal's 'repeat-until' construct.
  305.  
  306. - added a configuration option 'conf_para' which allows you to
  307. specify if an indented line is the start of another paragraph.  A
  308. new 'ask' argument has been added, 'sys_para', which returns this
  309. setting.
  310.  
  311. - greatly enhanced the 'mouse_scroll' function so that it now supports
  312. complete horizontal scrolling, shows marking on the fly, and does
  313. other nifty things.  The macro:
  314.      macro unmark
  315.            snap_to_mouse_xy 
  316.            point_mark
  317.            mouse_scroll 
  318.            point_mark
  319. will do the normal, on the fly marking that people have come to
  320. expect.  You will, however, need to have Automarking enabled for this
  321. to work properly (the default).
  322.  
  323. Bugs fixed in version 3.10
  324. ---------------------------
  325. - fixed a bug which caused the 'single_key_save' function to
  326. refuse to recognize any keys except three-key keystrokes.  This
  327. meant you could only save three-key keystrokes.
  328. - fixed what is hopefully the last bug having to due with the
  329. automatic stripping of trailing spaces.  It took a bizzare set of
  330. circumstances to bring it out, and mucho thanks to Pierre who
  331. came across a file and sequence of keystrokes to reproduce it.
  332. - fixed a bug related to marking a block (of any type) on a line
  333. number greater than 32767.  Inadvertently, a 16-bit integer was
  334. used as a temporary variable, thus screwing up marking above the
  335. 32k mark.
  336. - fixed a bug in the 'report_bsize' function which had it
  337. inaccurately reporting block sizes which were point marked and
  338. spanned a line.                  
  339. - fixed a bug in the search replace algorithm which caused Bingo
  340. to "eat" memory with every replace under certain conditions.
  341. - fixed several small bugs in the paragraph reformat routine
  342. which could cause all kinds of havoc.  Thanks Terry!
  343. - fixed a bug where 'extend_mark' did not function properly.
  344. - fixed a bug with Bingo not preserving the cursor size when
  345. executing DOS commands.
  346. - fixed an inconsistency in the 'bottom_of_screen' function.
  347. - fixed a number of bugs in the way searching within marked Point
  348. and Vertical blocks was handled.
  349. - fixed a bug in the 'window_bottom' & 'window_top' functions
  350. when a window was vertically split.             
  351. - fixed a bug in the Wordstar block manipulation functions,
  352. 'block_move', 'block_copy', which could cause some display
  353. oddities when the block being manipulated was point marked.
  354. Thanks Terry!
  355. - cleaned up the string entry routine to make it more consistent
  356. as to when it blanks the contents on intial string entry.
  357. - fixed a bug when switching files with only 1 file in the ring,
  358. and having more than 1 window open.
  359.